//
//  main.m
//  04-NSDctionaryHomeWork
//
//  Created by dllo on 16/7/7.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Color.h"
int main(int argc, const char * argv[]) {
    /**
     处理⽂件crayons.txt中的⽂本信息，⽂本内容是关于颜⾊的，每⾏都是⼀ 个颜⾊的信息，例如：Almond #EED9C4，前⼀个字符串是颜⾊的名称，后⼀ 个字符串是颜⾊的16进制⾊值，处理⽂本完成如下需求:
     
     使⽤字典管理所有的颜⾊，即字典中存储的是多个键值对，颜⾊名称为 key，16进制颜⾊值（不带#）是value。
     使⽤⼀个新的字典管理颜⾊，对颜⾊进⾏分类管理，即：“A”，“B”，“C”… 即这个字典包含多个键值对，key是26个字⺟，value是数组，数组⾥存放的是 Color对象（包含name和colorValue）。需要⾃⼰创建Color类。
     获取文件中字符串的方法如下:
     
     NSString *path = [[NSBundle mainBundle] pathForResource:@"crayons" ofType:@"txt"];
     NSString *sourceStr = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
     根据得到的sourceStr进行处理
     */
    
    NSString * sourceStr = [NSString stringWithContentsOfFile:@"/Users/dllo/DLS10710/Objective-C/HomeWork/04-NSDctionaryHomeWork/04-NSDctionaryHomeWork/crayons.txt" encoding:NSUTF8StringEncoding error:nil];
    
    NSArray *colorArray = [sourceStr componentsSeparatedByString:@"\n"];
    NSMutableArray *keyArray = [NSMutableArray array];
    NSMutableArray *valueArray = [NSMutableArray array];
    NSMutableDictionary *colorDic = [NSMutableDictionary dictionary];
    for (NSInteger i = 0; i < colorArray.count - 1; i++) {
        NSString *colorStr = colorArray[i];
        NSRange keyRang = {0, colorStr.length - 8};
        NSRange valueRang = {colorStr.length - 6, 6};
       [keyArray addObject:[colorStr substringWithRange:keyRang]];
       [valueArray addObject:[colorStr substringWithRange:valueRang]];
    }
    for (NSInteger i = 0; i < keyArray.count; i++) {
        [colorDic setObject:valueArray[i] forKey:keyArray[i]];
    }
    NSLog(@"%@",colorDic);
    
    NSMutableDictionary *newColorDic = [NSMutableDictionary dictionary];
    for (NSInteger i = 0; i < keyArray.count; i++) {
        Color *color = [Color colorWithName:keyArray[i] colorValue:valueArray[i]];
        NSRange rang = {0, 1};
        NSMutableArray *colorArr = [newColorDic objectForKey:[color.name substringWithRange:rang]];
        if (colorArr == nil) {
            colorArr = [NSMutableArray array];
            [colorArr addObject:color];
            [newColorDic setObject:colorArr forKey:[color.name substringWithRange:rang]];
        } else {
            [colorArr addObject:color];
        }
    }
    NSLog(@"%@",newColorDic);
    return 0;
}
